/**
 * 深度拷贝值
 * @param {*} value - 要拷贝的值
 * @returns {*} 拷贝后的值
 */
function deepClone(value) {
  // 1.如果是数组
  if (Array.isArray(value)) {
    return value.map(item => deepClone(item));
  }
  // 2.如果是对象
  if (typeof value === 'object' && value !== null) {
    const cloneObj = {};
    Object.keys(value).forEach(key => {
      cloneObj[key] = deepClone(value[key]);
    });
    return cloneObj;
  }
  // 3.如果是基本类型，直接返回
  return value;
}


/**
 * 拷贝属性，支持对象和数组的深度拷贝
 * @param {Object} source - 源对象，从中拷贝属性
 * @param {Object} target - 目标对象，将属性拷贝到该对象
 * @returns {Object} 返回赋值完毕的目标对象
 */
export function deep_cp_Func(source, target) {
  Object.keys(target).forEach(key => {
    if (source.hasOwnProperty(key)) {
      // 对源对象的属性进行深度拷贝
      target[key] = deepClone(source[key]);
    }
  });

  return target;
}  


export default {
    deep_cp_Func
};